#include "stdafx.h"
#include <iostream>
#include <queue>
using namespace std;

template <typename T>
class Stack
{
public:
    void push(T data)
    {
		if (q1.empty()&& q2.empty())
		{
			q1.push(data);
			cout<<"push:"<<q1.back()<<endl;
		}
		else if (!q1.empty())
		{
			q1.push(data);
			cout<<"push:"<<q1.back()<<endl;
		}
		else if (!q2.empty())
		{
			q2.push(data);
			cout<<"push:"<<q2.back()<<endl;
		}
    };

	void pop()
	{
		if (!q1.empty())
		{
			int count = q1.size();
			for (int i=0; i<count-1; i++)
			{
				q2.push(q1.front());
				q1.pop();
			}
			cout<<"pop:"<<q1.front()<<endl;
			q1.pop();
		}
		else if (!q2.empty())
		{
			int count = q2.size();
			for (int i=0; i<count-1; i++)
			{
				q1.push(q2.front());
				q2.pop();
			}
			cout<<"pop:"<<q2.front()<<endl;
			q2.pop();
		}
	};

private:
	queue<T> q1;
	queue<T> q2;
};

int main(int argc, char* argv[])
{
	Stack<int> s;
	s.push(1);
	s.push(2);
	s.push(3);
	s.pop();
	s.push(4);
	s.push(5);
	s.push(6);

	s.pop();
	s.pop();
	s.pop();
	s.pop();
	s.pop();
	system("pause");
	return 0;
}